﻿package baidu.reader.common.utils
{

    public class Zh2Number extends Object
    {
        private static var stringMap:Array = [];
        private static var tempNumbers:Array;

        public function Zh2Number()
        {
            return;
        }// end function

        public static function fromString(param1:String) : Number
        {
            var _loc_2:Array = null;
            var _loc_3:int = 0;
            var _loc_4:int = 0;
            var _loc_5:int = 0;
            var _loc_6:String = null;
            var _loc_7:int = 0;
            var _loc_8:int = 0;
            if (!/[十百千万]+""[十百千万]+/.test(param1))
            {
                _loc_4 = 0;
                _loc_2 = param1.split("");
                _loc_3 = _loc_2.length - 1;
                while (_loc_3 >= 0)
                {
                    
                    _loc_5 = Math.pow(10, (_loc_2.length - 1) - _loc_3);
                    _loc_4 = _loc_4 + stringMap[_loc_2[_loc_3]] * _loc_5;
                    _loc_3 = _loc_3 - 1;
                }
                return _loc_4;
            }
            tempNumbers = [];
            _loc_2 = param1.split("");
            tempNumbers.push(stringMap[_loc_2[0]]);
            _loc_3 = 1;
            while (_loc_3 < _loc_2.length)
            {
                
                _loc_6 = _loc_2[_loc_3];
                _loc_7 = stringMap[_loc_6] as int;
                if (_loc_7 > tempNumbers[(tempNumbers.length - 1)])
                {
                    _loc_4 = 0;
                    _loc_8 = tempNumbers.length - 1;
                    while (_loc_8 >= 0)
                    {
                        
                        if (_loc_7 > tempNumbers[_loc_8])
                        {
                            _loc_4 = _loc_4 + tempNumbers[_loc_8];
                            tempNumbers.splice(_loc_8, 1);
                        }
                        _loc_8 = _loc_8 - 1;
                    }
                    tempNumbers.push(_loc_4 * _loc_7);
                }
                else if (_loc_7 != 0)
                {
                    tempNumbers.push(_loc_7);
                }
                _loc_3++;
            }
            return arraySum(tempNumbers);
        }// end function

        private static function arraySum(param1:Array) : int
        {
            var _loc_2:int = 0;
            var _loc_3:int = 0;
            while (_loc_3 < param1.length)
            {
                
                _loc_2 = _loc_2 + param1[_loc_3];
                _loc_3++;
            }
            return _loc_2;
        }// end function

        stringMap["亿"] = 100000000;
        stringMap["万"] = 10000;
        stringMap["千"] = 1000;
        stringMap["百"] = 100;
        stringMap["十"] = 10;
        stringMap["零"] = 0;
        stringMap["一"] = 1;
        stringMap["二"] = 2;
        stringMap["两"] = 2;
        stringMap["三"] = 3;
        stringMap["四"] = 4;
        stringMap["五"] = 5;
        stringMap["六"] = 6;
        stringMap["七"] = 7;
        stringMap["八"] = 8;
        stringMap["九"] = 9;
    }
}
